home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 43
/
Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso
/
Aminet
/
demo
/
mag
/
hLA-AP15.lha
/
hLA-AP15
/
bonus
/
zdroj.lha
/
halda.asc
next >
Wrap
Text File
|
2000-05-01
|
1KB
|
82 lines
N=200
Dim halda(N)
For a=1 To N
halda(a)=Int(Rnd(100))
Next a
NPrint "Nestridene pole:"
Gosub vypis
Gosub makeheap
NPrint "Halda:"
Gosub vypis
Gosub setrid
NPrint "Setridene pole:"
Gosub vypis
d$=Edit$(1)
End
setrid
For a=1 To N-1
Gosub vypustmin
halda(pocet+1)=minimum
Next a
Return
vypustmin
minimum=halda(1)
X=halda(pocet)
pocet=pocet-1
otec=1
pokracuj=True
While pokracuj
syn=2*otec
If syn<=pocet
If syn<pocet
If halda(syn)>halda(syn+1) Then syn=syn+1
EndIf
If X>halda(syn)
halda(otec)=halda(syn)
otec=syn
Else
pokracuj=False
EndIf
Else
pokracuj=False
EndIf
End While
halda(otec)=X
Return
makeheap
For pocet=2 To N
syn=pocet
X=halda(pocet)
pokracovat=True
While pokracovat
otec=Int(syn/2)
If halda(otec)<X
pokracovat=False
Else
halda(syn)=halda(otec)
syn=otec
If syn=1 Then pokracovat=False
EndIf
End While
halda(syn)=X
Next pocet
pocet=50
Return
vypis
For a=0 To Int(N/10)-1
For b=1 To 10
Print halda(a*10+b)," "
Next b
NPrint ""
Next a
Return